#ifndef IGRAPHGENERATOR_H_
#define IGRAPHGENERATOR_H_

#include <boost/shared_ptr.hpp>

#include "graphsupport/graph/operation/IGraphOperation.h"

// TODO [minor]: now this interface is almost same as graphsupport/graph/operation/IGraphOperation -- merge them
class IGraphGenerator
{
public:
	IGraphGenerator() {}

	virtual void generateGraph( Graph & graph, IOperationSettings & genSettings = IOperationSettings::EMPTY_SETTINGS ) = 0;

	virtual ~IGraphGenerator();

private:
	IGraphGenerator( const IGraphGenerator & ) {}
	void operator = ( const IGraphGenerator & ) {}
};

typedef boost::shared_ptr< IGraphGenerator > IGraphGeneratorPtr;

#endif /* IGRAPHGENERATOR_H_ */
